home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / intuisup.lha / Intuisup / source.lha / Library / library_test2.c < prev    next >
C/C++ Source or Header  |  1992-07-28  |  43KB  |  1,231 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1992 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: library_test.c
  6.  *    Created ..: Sunday 19-Jul-92 14:28:01
  7.  *    Revision .: 0
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    19-Jul-92   Torsten Jürgeleit      Created this file!
  12.  *
  13.  ****************************************************************************
  14.  *
  15.  *    Test for IntuiSup library to demonstrate the use of more than one
  16.  *    gadget lists per window
  17.  *
  18.  * $Revision Header ********************************************************/
  19.  
  20.     /* Includes */
  21.  
  22. #include <exec/types.h>
  23. #include <exec/memory.h>
  24. #include <graphics/gfxbase.h>
  25. #include <graphics/text.h>
  26. #include <intuition/intuition.h>
  27. #ifdef AZTEC_C
  28. #include <functions.h>   /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
  29. #endif
  30. #include "intuisup.h"
  31.  
  32.     /* Defines */
  33.  
  34. #define WINDOW_WIDTH        600
  35. #define WINDOW_HEIGHT        180
  36. #define WINDOW_IDCMP        (CLOSEWINDOW | GADGET_IDCMP_FLAGS_ALL | MENUPICK)
  37. #define WINDOW_FLAGS        (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | ACTIVATE)
  38. #define WINDOW_TITLE        (UBYTE *)" Library test "
  39.  
  40. #define RENDER_INFO_FLAGS    (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
  41. #define OPEN_WINDOW_FLAGS    (USHORT)OPEN_WINDOW_FLAG_CENTER_SCREEN
  42.  
  43. #define MESSAGE_LEFT_EDGE    0
  44. #define MESSAGE_TOP_EDGE    (WINDOW_HEIGHT - MESSAGE_HEIGHT - 10)
  45. #define MESSAGE_WIDTH        WINDOW_WIDTH
  46. #define MESSAGE_HEIGHT        8
  47. #define MESSAGE_TEXT1        "Object %d text \"%s\""
  48. #define MESSAGE_TEXT2        "Object %d value %ld"
  49. #define MESSAGE_TEXT3        "Menu no. %d menu item no. %d sub item no. %d selected"
  50. #define MESSAGE_TEXT_ATTR    &topaz80_attr
  51.  
  52.     /* Globals */
  53.  
  54. struct IntuitionBase  *IntuitionBase;
  55. struct Library        *IntuiSupBase;
  56.  
  57.     /* Statics */
  58.  
  59. STATIC struct NewWindow  test_new_window = {
  60.    0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 1, WINDOW_IDCMP, WINDOW_FLAGS,
  61.    NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
  62. };
  63. STATIC struct TextAttr  topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
  64.                            FS_NORMAL, FPF_ROMFONT },
  65.             topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
  66.                            FS_NORMAL, FPF_ROMFONT };
  67.     /* Defines for select list */
  68.  
  69. #define SELECT_ENTRY_BUTTON        0
  70. #define SELECT_ENTRY_BUTTON_IMAGE    1
  71. #define SELECT_ENTRY_CHECK        2
  72. #define SELECT_ENTRY_MX            3
  73. #define SELECT_ENTRY_STRING        4
  74. #define SELECT_ENTRY_INTEGER        5
  75. #define SELECT_ENTRY_SLIDER        6
  76. #define SELECT_ENTRY_SCROLLER        7
  77. #define SELECT_ENTRY_CYCLE        8
  78. #define SELECT_ENTRY_COUNT        9
  79. #define SELECT_ENTRY_LISTVIEW        10
  80. #define SELECT_ENTRY_PALETTE        11
  81. #define SELECT_ENTRY_AUTO_REQUESTER    12
  82. #define SELECT_ENTRY_REQUESTER        13
  83.  
  84.     /* Defines for select gadgets */
  85.  
  86. #define SELECT_GADGET_LIST        0
  87. #define SELECT_GADGET_DISABLED        1
  88. #define SELECT_GADGET_NO_BORDER        2
  89. #define SELECT_GADGET_HIGH_COMP        3
  90. #define SELECT_GADGET_TEXT_COLOR2    4
  91.  
  92. #define SELECT_FLAG_DISABLED        (1 << 0)
  93. #define SELECT_FLAG_NO_BORDER        (1 << 1)
  94. #define SELECT_FLAG_HIGH_COMP        (1 << 2)
  95. #define SELECT_FLAG_TEXT_COLOR2        (1 << 3)
  96. #define SELECT_FLAG_CREATE_GADGETS    (1 << 4)
  97.  
  98. #define SELECT_GADGET1_TYPE        GADGET_DATA_TYPE_LISTVIEW
  99. #define SELECT_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_LISTVIEW_SHOW_SELECTED)
  100. #define SELECT_GADGET1_LEFT_EDGE    20
  101. #define SELECT_GADGET1_TOP_EDGE        22
  102. #define SELECT_GADGET1_WIDTH        200
  103. #define SELECT_GADGET1_HEIGHT        (8 * 8 + 4)
  104. #define SELECT_GADGET1_TEXT        "ISUP _objects"
  105. #define SELECT_GADGET1_TEXT_ATTR    &topaz80_attr
  106. #define SELECT_GADGET1_SPACING        0
  107. #define SELECT_GADGET1_TOP        0
  108. #define SELECT_GADGET1_LIST        (BYTE *)&select_list
  109.  
  110. #define SELECT_GADGET2_TYPE        GADGET_DATA_TYPE_CHECK
  111. #define SELECT_GADGET2_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  112. #define SELECT_GADGET2_LEFT_EDGE    SELECT_GADGET1_LEFT_EDGE
  113. #define SELECT_GADGET2_TOP_EDGE        (SELECT_GADGET1_TOP_EDGE + SELECT_GADGET1_HEIGHT + 10)
  114. #define SELECT_GADGET2_WIDTH        22
  115. #define SELECT_GADGET2_HEIGHT        11
  116. #define SELECT_GADGET2_TEXT        "_Disabled"
  117. #define SELECT_GADGET2_TEXT_ATTR    &topaz60_attr
  118. #define SELECT_GADGET2_CHECK_STATE    0
  119.  
  120. #define SELECT_GADGET3_TYPE        GADGET_DATA_TYPE_CHECK
  121. #define SELECT_GADGET3_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  122. #define SELECT_GADGET3_LEFT_EDGE    SELECT_GADGET1_LEFT_EDGE
  123. #define SELECT_GADGET3_TOP_EDGE        (SELECT_GADGET2_TOP_EDGE + SELECT_GADGET2_HEIGHT + 5)
  124. #define SELECT_GADGET3_WIDTH        22
  125. #define SELECT_GADGET3_HEIGHT        11
  126. #define SELECT_GADGET3_TEXT        "No _border"
  127. #define SELECT_GADGET3_TEXT_ATTR    &topaz60_attr
  128. #define SELECT_GADGET3_CHECK_STATE    0
  129.  
  130. #define SELECT_GADGET4_TYPE        GADGET_DATA_TYPE_CHECK
  131. #define SELECT_GADGET4_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  132. #define SELECT_GADGET4_LEFT_EDGE    SELECT_GADGET1_LEFT_EDGE
  133. #define SELECT_GADGET4_TOP_EDGE        (SELECT_GADGET3_TOP_EDGE + SELECT_GADGET3_HEIGHT + 5)
  134. #define SELECT_GADGET4_WIDTH        22
  135. #define SELECT_GADGET4_HEIGHT        11
  136. #define SELECT_GADGET4_TEXT        "_Highcomp"
  137. #define SELECT_GADGET4_TEXT_ATTR    &topaz60_attr
  138. #define SELECT_GADGET4_CHECK_STATE    0
  139.  
  140. #define SELECT_GADGET5_TYPE        GADGET_DATA_TYPE_CHECK
  141. #define SELECT_GADGET5_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  142. #define SELECT_GADGET5_LEFT_EDGE    SELECT_GADGET1_LEFT_EDGE
  143. #define SELECT_GADGET5_TOP_EDGE        (SELECT_GADGET4_TOP_EDGE + SELECT_GADGET4_HEIGHT + 5)
  144. #define SELECT_GADGET5_WIDTH        22
  145. #define SELECT_GADGET5_HEIGHT        11
  146. #define SELECT_GADGET5_TEXT        "_Text color 2"
  147. #define SELECT_GADGET5_TEXT_ATTR    &topaz60_attr
  148. #define SELECT_GADGET5_CHECK_STATE    0
  149.  
  150.     /* Statics for select gadgets */
  151.  
  152. STATIC BYTE *select_list_entries[] = {
  153.     "Button",
  154.     "Button with image",
  155.     "Checkmark",
  156.     "Mutual exclude gadget",
  157.     "String gadget",
  158.     "Integer gadget",
  159.     "Slider",
  160.     "Scroller",
  161.     "Cycle gadget",
  162.     "Count gadget",
  163.     "Listview",
  164.     "Palette",
  165.     "Auto requester",
  166.     "Requester",
  167.     NULL
  168. };
  169. STATIC struct List  select_list;
  170. STATIC struct GadgetData  select_gadget_data[] = {
  171.    {
  172.     SELECT_GADGET1_TYPE,        /* gd_Type */
  173.     SELECT_GADGET1_FLAGS,        /* gd_Flags */
  174.     SELECT_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  175.     SELECT_GADGET1_TOP_EDGE,    /* gd_TopEdge */
  176.     SELECT_GADGET1_WIDTH,        /* gd_Width */
  177.     SELECT_GADGET1_HEIGHT,        /* gd_Height */
  178.     SELECT_GADGET1_TEXT,        /* *gd_Text */
  179.     SELECT_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  180.     {
  181.     SELECT_GADGET1_SPACING,        /* gd_ListViewSpacing */
  182.     SELECT_GADGET1_TOP,        /* gd_ListViewTop */
  183.     SELECT_GADGET1_LIST        /* gd_ListViewList */
  184.     }
  185.    }, {
  186.     SELECT_GADGET2_TYPE,        /* gd_Type */
  187.     SELECT_GADGET2_FLAGS,        /* gd_Flags */
  188.     SELECT_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  189.     SELECT_GADGET2_TOP_EDGE,    /* gd_TopEdge */
  190.     SELECT_GADGET2_WIDTH,        /* gd_Width */
  191.     SELECT_GADGET2_HEIGHT,        /* gd_Height */
  192.     SELECT_GADGET2_TEXT,        /* *gd_Text */
  193.     SELECT_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  194.     {
  195.     SELECT_GADGET2_CHECK_STATE,    /* gd_CheckState */
  196.     0, 0 }
  197.    }, {
  198.     SELECT_GADGET3_TYPE,        /* gd_Type */
  199.     SELECT_GADGET3_FLAGS,        /* gd_Flags */
  200.     SELECT_GADGET3_LEFT_EDGE,    /* gd_LeftEdge */
  201.     SELECT_GADGET3_TOP_EDGE,    /* gd_TopEdge */
  202.     SELECT_GADGET3_WIDTH,        /* gd_Width */
  203.     SELECT_GADGET3_HEIGHT,        /* gd_Height */
  204.     SELECT_GADGET3_TEXT,        /* *gd_Text */
  205.     SELECT_GADGET3_TEXT_ATTR,    /* *gd_TextAttr */
  206.     {
  207.     SELECT_GADGET3_CHECK_STATE,    /* gd_CheckState */
  208.     0, 0 }
  209.    }, {
  210.     SELECT_GADGET4_TYPE,        /* gd_Type */
  211.     SELECT_GADGET4_FLAGS,        /* gd_Flags */
  212.     SELECT_GADGET4_LEFT_EDGE,    /* gd_LeftEdge */
  213.     SELECT_GADGET4_TOP_EDGE,    /* gd_TopEdge */
  214.     SELECT_GADGET4_WIDTH,        /* gd_Width */
  215.     SELECT_GADGET4_HEIGHT,        /* gd_Height */
  216.     SELECT_GADGET4_TEXT,        /* *gd_Text */
  217.     SELECT_GADGET4_TEXT_ATTR,    /* *gd_TextAttr */
  218.     {
  219.     SELECT_GADGET4_CHECK_STATE,    /* gd_CheckState */
  220.     0, 0 }
  221.    }, {
  222.     SELECT_GADGET5_TYPE,        /* gd_Type */
  223.     SELECT_GADGET5_FLAGS,        /* gd_Flags */
  224.     SELECT_GADGET5_LEFT_EDGE,    /* gd_LeftEdge */
  225.     SELECT_GADGET5_TOP_EDGE,    /* gd_TopEdge */
  226.     SELECT_GADGET5_WIDTH,        /* gd_Width */
  227.     SELECT_GADGET5_HEIGHT,        /* gd_Height */
  228.     SELECT_GADGET5_TEXT,        /* *gd_Text */
  229.     SELECT_GADGET5_TEXT_ATTR,    /* *gd_TextAttr */
  230.     {
  231.     SELECT_GADGET5_CHECK_STATE,    /* gd_CheckState */
  232.     0, 0 }
  233.    }, {
  234.     INTUISUP_DATA_END        /* end of gadget data array */
  235.    }
  236. };
  237.  
  238.     /* Defines for test gadgets */
  239.  
  240. #define TEST_AREA_LEFT_EDGE    (SELECT_GADGET1_LEFT_EDGE + SELECT_GADGET1_WIDTH + 20)
  241. #define TEST_AREA_TOP_EDGE    0
  242. #define TEST_AREA_WIDTH        (WINDOW_WIDTH - TEST_AREA_LEFT_EDGE)
  243. #define TEST_AREA_HEIGHT    (WINDOW_HEIGHT - 28)
  244.  
  245. #define TEST0_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  246. #define TEST0_GADGET1_FLAGS        GADGET_DATA_FLAG_HOTKEY
  247. #define TEST0_GADGET1_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + (TEST_AREA_WIDTH - TEST0_GADGET1_WIDTH) / 2)
  248. #define TEST0_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + (TEST_AREA_HEIGHT - TEST0_GADGET1_HEIGHT) / 2)
  249. #define TEST0_GADGET1_WIDTH        ((6 + 2) * 10)
  250. #define TEST0_GADGET1_HEIGHT        19
  251. #define TEST0_GADGET1_TEXT        "B_utton"
  252. #define TEST0_GADGET1_TEXT_ATTR        &topaz60_attr
  253.  
  254. #define TEST1_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  255. #define TEST1_GADGET1_FLAGS        (GADGET_DATA_FLAG_BUTTON_TOGGLE | GADGET_DATA_FLAG_BUTTON_IMAGE | GADGET_DATA_FLAG_NO_BORDER | GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  256. #define TEST1_GADGET1_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + 80)
  257. #define TEST1_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + (TEST_AREA_HEIGHT - TEST1_GADGET1_HEIGHT) / 2)
  258. #define TEST1_GADGET1_WIDTH        16
  259. #define TEST1_GADGET1_HEIGHT        8
  260. #define TEST1_GADGET1_TEXT        "B_utton with image"
  261. #define TEST1_GADGET1_TEXT_ATTR        &topaz60_attr
  262. #define TEST1_GADGET1_NORMAL_RENDER    NULL    /* (LONG)&image1 */
  263. #define TEST1_GADGET1_SELECT_RENDER    (BYTE *)&image2
  264.  
  265. #define TEST2_GADGET1_TYPE        GADGET_DATA_TYPE_CHECK
  266. #define TEST2_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_NO_BORDER | GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  267. #define TEST2_GADGET1_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + 100)
  268. #define TEST2_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + (TEST_AREA_HEIGHT - TEST2_GADGET1_HEIGHT) / 2)
  269. #define TEST2_GADGET1_WIDTH        22
  270. #define TEST2_GADGET1_HEIGHT        11
  271. #define TEST2_GADGET1_TEXT        "_Check gadget"
  272. #define TEST2_GADGET1_TEXT_ATTR        &topaz60_attr
  273. #define TEST2_GADGET1_CHECK_STATE    1
  274.  
  275. #define TEST3_GADGET1_TYPE        GADGET_DATA_TYPE_MX
  276. #define TEST3_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT)
  277. #define TEST3_GADGET1_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + (TEST_AREA_WIDTH - TEST3_GADGET1_WIDTH) / 2)
  278. #define TEST3_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + (TEST_AREA_HEIGHT - TEST3_GADGET1_HEIGHT) / 2)
  279. #define TEST3_GADGET1_WIDTH        220
  280. #define TEST3_GADGET1_HEIGHT        40
  281. #define TEST3_GADGET1_TEXT        "Mutual e_xclude gadget"
  282. #define TEST3_GADGET1_TEXT_ATTR        &topaz60_attr
  283. #define TEST3_GADGET1_SPACING        2
  284. #define TEST3_GADGET1_ACTIVE        1
  285. #define TEST3_GADGET1_TEXT_ARRAY    &mx_array[0]
  286.  
  287. #define TEST4_GADGET1_TYPE        GADGET_DATA_TYPE_STRING
  288. #define TEST4_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_LEFT)
  289. #define TEST4_GADGET1_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + 140)
  290. #define TEST4_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + (TEST_AREA_HEIGHT - TEST4_GADGET1_HEIGHT - 10 - TEST4_GADGET2_HEIGHT) / 2)
  291. #define TEST4_GADGET1_WIDTH        (6 * 8 + 2 * 6)
  292. #define TEST4_GADGET1_HEIGHT        (8 + 2 * 3)
  293. #define TEST4_GADGET1_TEXT        "String gadget _1"
  294. #define TEST4_GADGET1_TEXT_ATTR        &topaz80_attr
  295. #define TEST4_GADGET1_INPUT_LEN        10
  296. #define TEST4_GADGET1_AUTO_ACTIVATE    INPUT_AUTO_ACTIVATE(1,1)
  297. #define TEST4_GADGET1_INPUT_DEFAULT    "Test 1"
  298.  
  299. #define TEST4_GADGET2_TYPE        GADGET_DATA_TYPE_STRING
  300. #define TEST4_GADGET2_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_RIGHT)
  301. #define TEST4_GADGET2_LEFT_EDGE        TEST4_GADGET1_LEFT_EDGE
  302. #define TEST4_GADGET2_TOP_EDGE        (TEST4_GADGET1_TOP_EDGE + TEST4_GADGET1_HEIGHT + 10)
  303. #define TEST4_GADGET2_WIDTH        TEST4_GADGET1_WIDTH
  304. #define TEST4_GADGET2_HEIGHT        TEST4_GADGET1_HEIGHT
  305. #define TEST4_GADGET2_TEXT        "String gadget _2"
  306. #define TEST4_GADGET2_TEXT_ATTR        TEST4_GADGET1_TEXT_ATTR
  307. #define TEST4_GADGET2_INPUT_LEN        TEST4_GADGET1_INPUT_LEN
  308. #define TEST4_GADGET2_AUTO_ACTIVATE    INPUT_AUTO_ACTIVATE(0,0)
  309. #define TEST4_GADGET2_INPUT_DEFAULT    "Test 2"
  310.  
  311. #define TEST5_GADGET1_TYPE        GADGET_DATA_TYPE_INTEGER
  312. #define TEST5_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_LEFT)
  313. #define TEST5_GADGET1_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + 140)
  314. #define TEST5_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + (TEST_AREA_HEIGHT - TEST4_GADGET1_HEIGHT - 10 - TEST4_GADGET2_HEIGHT) / 2)
  315. #define TEST5_GADGET1_WIDTH        (6 * 8 + 2 * 6)
  316. #define TEST5_GADGET1_HEIGHT        (8 + 2 * 3)
  317. #define TEST5_GADGET1_TEXT        "Integer gadget _1"
  318. #define TEST5_GADGET1_TEXT_ATTR        &topaz80_attr
  319. #define TEST5_GADGET1_INPUT_LEN        10
  320. #define TEST5_GADGET1_AUTO_ACTIVATE    INPUT_AUTO_ACTIVATE(1,1)
  321. #define TEST5_GADGET1_INPUT_DEFAULT    (VOID *)1L
  322.  
  323. #define TEST5_GADGET2_TYPE        GADGET_DATA_TYPE_INTEGER
  324. #define TEST5_GADGET2_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_RIGHT)
  325. #define TEST5_GADGET2_LEFT_EDGE        TEST5_GADGET1_LEFT_EDGE
  326. #define TEST5_GADGET2_TOP_EDGE        (TEST5_GADGET1_TOP_EDGE + TEST5_GADGET1_HEIGHT + 10)
  327. #define TEST5_GADGET2_WIDTH        TEST5_GADGET1_WIDTH
  328. #define TEST5_GADGET2_HEIGHT        TEST5_GADGET1_HEIGHT
  329. #define TEST5_GADGET2_TEXT        "Integer gadget _2"
  330. #define TEST5_GADGET2_TEXT_ATTR        TEST5_GADGET1_TEXT_ATTR
  331. #define TEST5_GADGET2_INPUT_LEN        TEST5_GADGET1_INPUT_LEN
  332. #define TEST5_GADGET2_AUTO_ACTIVATE    INPUT_AUTO_ACTIVATE(0,0)
  333. #define TEST5_GADGET2_INPUT_DEFAULT    (VOID *)2L
  334.  
  335. #define TEST6_GADGET1_TYPE        GADGET_DATA_TYPE_SLIDER
  336. #define TEST6_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  337. #define TEST6_GADGET1_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + 40)
  338. #define TEST6_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + 120)
  339. #define TEST6_GADGET1_WIDTH        100
  340. #define TEST6_GADGET1_HEIGHT        9
  341. #define TEST6_GADGET1_TEXT        "_Slider gadget 1"
  342. #define TEST6_GADGET1_TEXT_ATTR        &topaz60_attr
  343. #define TEST6_GADGET1_MIN        -10
  344. #define TEST6_GADGET1_MAX        10
  345. #define TEST6_GADGET1_LEVEL        0
  346.  
  347. #define TEST6_GADGET2_TYPE        GADGET_DATA_TYPE_SLIDER
  348. #define TEST6_GADGET2_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_ABOVE)
  349. #define TEST6_GADGET2_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + 180)
  350. #define TEST6_GADGET2_TOP_EDGE        (TEST_AREA_TOP_EDGE + 50)
  351. #define TEST6_GADGET2_WIDTH        18
  352. #define TEST6_GADGET2_HEIGHT        50
  353. #define TEST6_GADGET2_TEXT        "S_lider gadget 2"
  354. #define TEST6_GADGET2_TEXT_ATTR        &topaz60_attr
  355. #define TEST6_GADGET2_MIN        -10
  356. #define TEST6_GADGET2_MAX        10
  357. #define TEST6_GADGET2_LEVEL        0
  358.  
  359. #define TEST7_GADGET1_TYPE        GADGET_DATA_TYPE_SCROLLER
  360. #define TEST7_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT)
  361. #define TEST7_GADGET1_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + 200)
  362. #define TEST7_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + 120)
  363. #define TEST7_GADGET1_WIDTH        100
  364. #define TEST7_GADGET1_HEIGHT        0
  365. #define TEST7_GADGET1_TEXT        "_Scroller gadget 1"
  366. #define TEST7_GADGET1_TEXT_ATTR        &topaz60_attr
  367. #define TEST7_GADGET1_VISIBLE        4
  368. #define TEST7_GADGET1_TOTAL        20
  369. #define TEST7_GADGET1_TOP        (BYTE *)10
  370.  
  371. #define TEST7_GADGET2_TYPE        GADGET_DATA_TYPE_SCROLLER
  372. #define TEST7_GADGET2_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_ABOVE)
  373. #define TEST7_GADGET2_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + 180)
  374. #define TEST7_GADGET2_TOP_EDGE        (TEST_AREA_TOP_EDGE + 50)
  375. #define TEST7_GADGET2_WIDTH        0
  376. #define TEST7_GADGET2_HEIGHT        50
  377. #define TEST7_GADGET2_TEXT        "S_croller gadget 2"
  378. #define TEST7_GADGET2_TEXT_ATTR        &topaz60_attr
  379. #define TEST7_GADGET2_VISIBLE        4
  380. #define TEST7_GADGET2_TOTAL        20
  381. #define TEST7_GADGET2_TOP        (BYTE *)10
  382.  
  383. #define TEST8_GADGET1_TYPE        GADGET_DATA_TYPE_CYCLE
  384. #define TEST8_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_ABOVE)
  385. #define TEST8_GADGET1_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + (TEST_AREA_WIDTH - TEST8_GADGET1_WIDTH) / 2)
  386. #define TEST8_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + (TEST_AREA_HEIGHT - TEST8_GADGET1_HEIGHT) / 2)
  387. #define TEST8_GADGET1_WIDTH        160
  388. #define TEST8_GADGET1_HEIGHT        15
  389. #define TEST8_GADGET1_TEXT        "_Cycle gadget"
  390. #define TEST8_GADGET1_TEXT_ATTR        &topaz60_attr
  391. #define TEST8_GADGET1_SPACING        1
  392. #define TEST8_GADGET1_ACTIVE        2
  393. #define TEST8_GADGET1_TEXT_ARRAY    &cycle_text_array[0]
  394.  
  395. #define TEST9_GADGET1_TYPE        GADGET_DATA_TYPE_COUNT
  396. #define TEST9_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT)
  397. #define TEST9_GADGET1_LEFT_EDGE        (TEST_AREA_LEFT_EDGE + 200)
  398. #define TEST9_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + (TEST_AREA_HEIGHT - TEST9_GADGET1_HEIGHT) / 2)
  399. #define TEST9_GADGET1_WIDTH        80
  400. #define TEST9_GADGET1_HEIGHT        12
  401. #define TEST9_GADGET1_TEXT        "_Count gadget"
  402. #define TEST9_GADGET1_TEXT_ATTR        &topaz80_attr
  403. #define TEST9_GADGET1_MIN        100
  404. #define TEST9_GADGET1_MAX        1000
  405. #define TEST9_GADGET1_VALUE        (BYTE *)600
  406.  
  407. #define TEST10_GADGET1_TYPE        GADGET_DATA_TYPE_LISTVIEW
  408. #define TEST10_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_LISTVIEW_SHOW_SELECTED)
  409. #define TEST10_GADGET1_LEFT_EDGE    (TEST_AREA_LEFT_EDGE + (TEST_AREA_WIDTH - TEST10_GADGET1_WIDTH) / 2)
  410. #define TEST10_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + (TEST_AREA_HEIGHT - TEST10_GADGET1_HEIGHT) / 2)
  411. #define TEST10_GADGET1_WIDTH        160
  412. #define TEST10_GADGET1_HEIGHT        (4 * 9 + 2 * 4)
  413. #define TEST10_GADGET1_TEXT        "_List view gadget"
  414. #define TEST10_GADGET1_TEXT_ATTR    &topaz60_attr
  415. #define TEST10_GADGET1_SPACING        0
  416. #define TEST10_GADGET1_TOP        1
  417. #define TEST10_GADGET1_LIST        (BYTE *)&test_list
  418.  
  419. #define TEST11_GADGET1_TYPE        GADGET_DATA_TYPE_PALETTE
  420. #define TEST11_GADGET1_FLAGS        GADGET_DATA_FLAG_HOTKEY
  421. #define TEST11_GADGET1_LEFT_EDGE    (TEST_AREA_LEFT_EDGE + (TEST_AREA_WIDTH - TEST11_GADGET1_WIDTH) / 2)
  422. #define TEST11_GADGET1_TOP_EDGE        (TEST_AREA_TOP_EDGE + 30)
  423. #define TEST11_GADGET1_WIDTH        160
  424. #define TEST11_GADGET1_HEIGHT        20
  425. #define TEST11_GADGET1_TEXT        "_Palette gadget"
  426. #define TEST11_GADGET1_TEXT_ATTR    &topaz60_attr
  427. #define TEST11_GADGET1_DEPTH        2
  428. #define TEST11_GADGET1_COLOR_OFFSET    0
  429. #define TEST11_GADGET1_ACTIVE_COLOR    (BYTE *)0
  430.  
  431. #define TEST11_GADGET2_TYPE        GADGET_DATA_TYPE_PALETTE
  432. #define TEST11_GADGET2_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_PALETTE_INDICATOR_TOP)
  433. #define TEST11_GADGET2_LEFT_EDGE    (TEST_AREA_LEFT_EDGE + (TEST_AREA_WIDTH - TEST11_GADGET2_WIDTH) / 2)
  434. #define TEST11_GADGET2_TOP_EDGE        (TEST_AREA_TOP_EDGE + 70)
  435. #define TEST11_GADGET2_WIDTH        40
  436. #define TEST11_GADGET2_HEIGHT        80
  437. #define TEST11_GADGET2_TEXT        "P_alette gadget"
  438. #define TEST11_GADGET2_TEXT_ATTR    &topaz60_attr
  439. #define TEST11_GADGET2_DEPTH        2
  440. #define TEST11_GADGET2_COLOR_OFFSET    0
  441. #define TEST11_GADGET2_ACTIVE_COLOR    (BYTE *)0
  442.  
  443.     /* Statics for test gadgets */
  444.  
  445. STATIC struct GadgetData  test0_gadget_data[] = {
  446.    {
  447.     TEST0_GADGET1_TYPE,        /* gd_Type */
  448.     TEST0_GADGET1_FLAGS,        /* gd_Flags */
  449.     TEST0_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  450.     TEST0_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  451.     TEST0_GADGET1_WIDTH,        /* gd_Width */
  452.     TEST0_GADGET1_HEIGHT,        /* gd_Height */
  453.     TEST0_GADGET1_TEXT,        /* *gd_Text */
  454.     TEST0_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  455.     { 0, 0, 0 }
  456.    }, {
  457.     INTUISUP_DATA_END        /* end of gadget data array */
  458.    }
  459. };
  460. STATIC UWORD image1_data[] = {
  461.     0xffff, 0x8000, 0xbff0, 0xa00c, 0xa00c, 0xbff0, 0x8000, 0x8000,
  462.     0x0000, 0x0001, 0x0005, 0x1ff1, 0x1ff1, 0x0005, 0x0001, 0x7fff
  463. };
  464. STATIC struct Image  image1 = { 0, 0, 16, 8, 2, &image1_data[0], 3, 0, NULL };
  465. STATIC UWORD image2_data[] = {
  466.     0x0000, 0x000f, 0x3fff, 0x23fd, 0x3fcd, 0x7ff1, 0x7001, 0x7fff,
  467.     0xffff, 0x800e, 0x807e, 0x9ff8, 0x9ff0, 0xfe04, 0xf000, 0x8000
  468. };
  469. STATIC struct Image  image2 = { 0, 0, 16, 8, 2, &image2_data[0], 3, 0, NULL };
  470. STATIC struct GadgetData  test1_gadget_data[] = {
  471.    {
  472.     TEST1_GADGET1_TYPE,        /* gd_Type */
  473.     TEST1_GADGET1_FLAGS,        /* gd_Flags */
  474.     TEST1_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  475.     TEST1_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  476.     TEST1_GADGET1_WIDTH,        /* gd_Width */
  477.     TEST1_GADGET1_HEIGHT,        /* gd_Height */
  478.     TEST1_GADGET1_TEXT,        /* *gd_Text */
  479.     TEST1_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  480.     { 0,
  481.     TEST1_GADGET1_NORMAL_RENDER,    /* gd_ButtonNormalRender */
  482.     TEST1_GADGET1_SELECT_RENDER    /* gd_ButtonSelectRender */
  483.     }
  484.    }, {
  485.     INTUISUP_DATA_END        /* end of gadget data array */
  486.    }
  487. };
  488. STATIC struct GadgetData  test2_gadget_data[] = {
  489.    {
  490.     TEST2_GADGET1_TYPE,        /* gd_Type */
  491.     TEST2_GADGET1_FLAGS,        /* gd_Flags */
  492.     TEST2_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  493.     TEST2_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  494.     TEST2_GADGET1_WIDTH,        /* gd_Width */
  495.     TEST2_GADGET1_HEIGHT,        /* gd_Height */
  496.     TEST2_GADGET1_TEXT,        /* *gd_Text */
  497.     TEST2_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  498.     {
  499.     TEST2_GADGET1_CHECK_STATE,    /* gd_CheckState */
  500.     0, 0 }
  501.    }, {
  502.     INTUISUP_DATA_END        /* end of gadget data array */
  503.    }
  504. };
  505. STATIC BYTE *mx_array[] = {
  506.     "Fast File System", "Old File System", "Custom File System", NULL
  507. };
  508. STATIC struct GadgetData  test3_gadget_data[] = {
  509.    {
  510.     TEST3_GADGET1_TYPE,        /* gd_Type */
  511.     TEST3_GADGET1_FLAGS,        /* gd_Flags */
  512.     TEST3_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  513.     TEST3_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  514.     TEST3_GADGET1_WIDTH,        /* gd_Width */
  515.     TEST3_GADGET1_HEIGHT,        /* gd_Height */
  516.     TEST3_GADGET1_TEXT,        /* *gd_Text */
  517.     TEST3_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  518.     {
  519.     TEST3_GADGET1_SPACING,        /* gd_MXSpacing */
  520.     TEST3_GADGET1_ACTIVE,        /* gd_MXActiveEntry */
  521.     TEST3_GADGET1_TEXT_ARRAY    /* gd_MXTextArray */
  522.     }
  523.    }, {
  524.     INTUISUP_DATA_END        /* end of gadget data array */
  525.    }
  526. };
  527. STATIC struct GadgetData  test4_gadget_data[] = {
  528.    {
  529.     TEST4_GADGET1_TYPE,        /* gd_Type */
  530.     TEST4_GADGET1_FLAGS,        /* gd_Flags */
  531.     TEST4_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  532.     TEST4_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  533.     TEST4_GADGET1_WIDTH,        /* gd_Width */
  534.     TEST4_GADGET1_HEIGHT,        /* gd_Height */
  535.     TEST4_GADGET1_TEXT,        /* *gd_Text */
  536.     TEST4_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  537.     {
  538.     TEST4_GADGET1_INPUT_LEN,    /* gd_InputLen */
  539.     TEST4_GADGET1_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  540.     TEST4_GADGET1_INPUT_DEFAULT    /* gd_InputDefault */
  541.     }
  542.    }, {
  543.     TEST4_GADGET2_TYPE,        /* gd_Type */
  544.     TEST4_GADGET2_FLAGS,        /* gd_Flags */
  545.     TEST4_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  546.     TEST4_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  547.     TEST4_GADGET2_WIDTH,        /* gd_Width */
  548.     TEST4_GADGET2_HEIGHT,        /* gd_Height */
  549.     TEST4_GADGET2_TEXT,        /* *gd_Text */
  550.     TEST4_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  551.     {
  552.     TEST4_GADGET2_INPUT_LEN,    /* gd_InputLen */
  553.     TEST4_GADGET2_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  554.     TEST4_GADGET2_INPUT_DEFAULT    /* gd_InputDefault */
  555.     }
  556.    }, {
  557.     INTUISUP_DATA_END        /* end of gadget data array */
  558.    }
  559. };
  560. STATIC struct GadgetData  test5_gadget_data[] = {
  561.    {
  562.     TEST5_GADGET1_TYPE,        /* gd_Type */
  563.     TEST5_GADGET1_FLAGS,        /* gd_Flags */
  564.     TEST5_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  565.     TEST5_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  566.     TEST5_GADGET1_WIDTH,        /* gd_Width */
  567.     TEST5_GADGET1_HEIGHT,        /* gd_Height */
  568.     TEST5_GADGET1_TEXT,        /* *gd_Text */
  569.     TEST5_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  570.     {
  571.     TEST5_GADGET1_INPUT_LEN,    /* gd_InputLen */
  572.     TEST5_GADGET1_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  573.     TEST5_GADGET1_INPUT_DEFAULT    /* gd_InputDefault */
  574.     }
  575.    }, {
  576.     TEST5_GADGET2_TYPE,        /* gd_Type */
  577.     TEST5_GADGET2_FLAGS,        /* gd_Flags */
  578.     TEST5_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  579.     TEST5_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  580.     TEST5_GADGET2_WIDTH,        /* gd_Width */
  581.     TEST5_GADGET2_HEIGHT,        /* gd_Height */
  582.     TEST5_GADGET2_TEXT,        /* *gd_Text */
  583.     TEST5_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  584.     {
  585.     TEST5_GADGET2_INPUT_LEN,    /* gd_InputLen */
  586.     TEST5_GADGET2_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  587.     TEST5_GADGET2_INPUT_DEFAULT    /* gd_InputDefault */
  588.     }
  589.    }, {
  590.     INTUISUP_DATA_END        /* end of gadget data array */
  591.    }
  592. };
  593. STATIC struct GadgetData  test6_gadget_data[] = {
  594.    {
  595.     TEST6_GADGET1_TYPE,        /* gd_Type */
  596.     TEST6_GADGET1_FLAGS,        /* gd_Flags */
  597.     TEST6_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  598.     TEST6_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  599.     TEST6_GADGET1_WIDTH,        /* gd_Width */
  600.     TEST6_GADGET1_HEIGHT,        /* gd_Height */
  601.     TEST6_GADGET1_TEXT,        /* *gd_Text */
  602.     TEST6_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  603.     {
  604.     TEST6_GADGET1_MIN,        /* gd_SliderMin */
  605.     TEST6_GADGET1_MAX,        /* gd_SliderMax */
  606.     TEST6_GADGET1_LEVEL        /* gd_SliderLevel */
  607.     }
  608.    }, {
  609.     TEST6_GADGET2_TYPE,        /* gd_Type */
  610.     TEST6_GADGET2_FLAGS,        /* gd_Flags */
  611.     TEST6_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  612.     TEST6_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  613.     TEST6_GADGET2_WIDTH,        /* gd_Width */
  614.     TEST6_GADGET2_HEIGHT,        /* gd_Height */
  615.     TEST6_GADGET2_TEXT,        /* *gd_Text */
  616.     TEST6_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  617.     {
  618.     TEST6_GADGET2_MIN,        /* gd_SliderMin */
  619.     TEST6_GADGET2_MAX,        /* gd_SliderMax */
  620.     TEST6_GADGET2_LEVEL        /* gd_SliderLevel */
  621.     }
  622.    }, {
  623.     INTUISUP_DATA_END        /* end of gadget data array */
  624.    }
  625. };
  626. STATIC struct GadgetData  test7_gadget_data[] = {
  627.    {
  628.     TEST7_GADGET1_TYPE,        /* gd_Type */
  629.     TEST7_GADGET1_FLAGS,        /* gd_Flags */
  630.     TEST7_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  631.     TEST7_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  632.     TEST7_GADGET1_WIDTH,        /* gd_Width */
  633.     TEST7_GADGET1_HEIGHT,        /* gd_Height */
  634.     TEST7_GADGET1_TEXT,        /* *gd_Text */
  635.     TEST7_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  636.     {
  637.     TEST7_GADGET1_VISIBLE,        /* gd_ScrollerVisible */
  638.     TEST7_GADGET1_TOTAL,        /* gd_ScrollerTotal */
  639.     TEST7_GADGET1_TOP        /* gd_ScrollerTop */
  640.     }
  641.    }, {
  642.     TEST7_GADGET2_TYPE,        /* gd_Type */
  643.     TEST7_GADGET2_FLAGS,        /* gd_Flags */
  644.     TEST7_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  645.     TEST7_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  646.     TEST7_GADGET2_WIDTH,        /* gd_Width */
  647.     TEST7_GADGET2_HEIGHT,        /* gd_Height */
  648.     TEST7_GADGET2_TEXT,        /* *gd_Text */
  649.     TEST7_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  650.     {
  651.     TEST7_GADGET2_VISIBLE,        /* gd_ScrollerVisible */
  652.     TEST7_GADGET2_TOTAL,        /* gd_ScrollerTotal */
  653.     TEST7_GADGET2_TOP        /* gd_ScrollerTop */
  654.     }
  655.    }, {
  656.     INTUISUP_DATA_END        /* end of gadget data array */
  657.    }
  658. };
  659. STATIC BYTE *cycle_text_array[] = {
  660.     "Amiga", "Workbench", "AmigaDOS", "Multitasking", "CLI", "ARexx",
  661.     "TeX", "Unix", NULL
  662. };
  663. STATIC struct GadgetData  test8_gadget_data[] = {
  664.    {
  665.     TEST8_GADGET1_TYPE,        /* gd_Type */
  666.     TEST8_GADGET1_FLAGS,        /* gd_Flags */
  667.     TEST8_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  668.     TEST8_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  669.     TEST8_GADGET1_WIDTH,        /* gd_Width */
  670.     TEST8_GADGET1_HEIGHT,        /* gd_Height */
  671.     TEST8_GADGET1_TEXT,        /* *gd_Text */
  672.     TEST8_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  673.     {
  674.     TEST8_GADGET1_SPACING,        /* gd_CycleSpacing */
  675.     TEST8_GADGET1_ACTIVE,        /* gd_CycleActive */
  676.     TEST8_GADGET1_TEXT_ARRAY    /* gd_CycleTextArray */
  677.     }
  678.    }, {
  679.     INTUISUP_DATA_END        /* end of gadget data array */
  680.    }
  681. };
  682. STATIC struct GadgetData  test9_gadget_data[] = {
  683.    {
  684.     TEST9_GADGET1_TYPE,        /* gd_Type */
  685.     TEST9_GADGET1_FLAGS,        /* gd_Flags */
  686.     TEST9_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  687.     TEST9_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  688.     TEST9_GADGET1_WIDTH,        /* gd_Width */
  689.     TEST9_GADGET1_HEIGHT,        /* gd_Height */
  690.     TEST9_GADGET1_TEXT,        /* *gd_Text */
  691.     TEST9_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  692.     {
  693.     TEST9_GADGET1_MIN,        /* gd_CountMin */
  694.     TEST9_GADGET1_MAX,        /* gd_CountMax */
  695.     TEST9_GADGET1_VALUE        /* gd_CountValue */
  696.     }
  697.    }, {
  698.     INTUISUP_DATA_END        /* end of gadget data array */
  699.    }
  700. };
  701. STATIC struct List  test_list;
  702. STATIC struct GadgetData  test10_gadget_data[] = {
  703.    {
  704.     TEST10_GADGET1_TYPE,        /* gd_Type */
  705.     TEST10_GADGET1_FLAGS,        /* gd_Flags */
  706.     TEST10_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  707.     TEST10_GADGET1_TOP_EDGE,    /* gd_TopEdge */
  708.     TEST10_GADGET1_WIDTH,        /* gd_Width */
  709.     TEST10_GADGET1_HEIGHT,        /* gd_Height */
  710.     TEST10_GADGET1_TEXT,        /* *gd_Text */
  711.     TEST10_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  712.     {
  713.     TEST10_GADGET1_SPACING,        /* gd_ListViewSpacing */
  714.     TEST10_GADGET1_TOP,        /* gd_ListViewTop */
  715.     TEST10_GADGET1_LIST        /* gd_ListViewList */
  716.     }
  717.    }, {
  718.     INTUISUP_DATA_END        /* end of gadget data array */
  719.    }
  720. };
  721. STATIC struct GadgetData  test11_gadget_data[] = {
  722.    {
  723.     TEST11_GADGET1_TYPE,        /* gd_Type */
  724.     TEST11_GADGET1_FLAGS,        /* gd_Flags */
  725.     TEST11_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  726.     TEST11_GADGET1_TOP_EDGE,    /* gd_TopEdge */
  727.     TEST11_GADGET1_WIDTH,        /* gd_Width */
  728.     TEST11_GADGET1_HEIGHT,        /* gd_Height */
  729.     TEST11_GADGET1_TEXT,        /* *gd_Text */
  730.     TEST11_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  731.     {
  732.     TEST11_GADGET1_DEPTH,        /* gd_PaletteDepth */
  733.     TEST11_GADGET1_COLOR_OFFSET,    /* gd_PaletteColorOffset */
  734.     TEST11_GADGET1_ACTIVE_COLOR    /* gd_PaletteActiveColor */
  735.     }
  736.    }, {
  737.     TEST11_GADGET2_TYPE,        /* gd_Type */
  738.     TEST11_GADGET2_FLAGS,        /* gd_Flags */
  739.     TEST11_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  740.     TEST11_GADGET2_TOP_EDGE,    /* gd_TopEdge */
  741.     TEST11_GADGET2_WIDTH,        /* gd_Width */
  742.     TEST11_GADGET2_HEIGHT,        /* gd_Height */
  743.     TEST11_GADGET2_TEXT,        /* *gd_Text */
  744.     TEST11_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  745.     {
  746.     TEST11_GADGET2_DEPTH,        /* gd_PaletteDepth */
  747.     TEST11_GADGET2_COLOR_OFFSET,    /* gd_PaletteColorOffset */
  748.     TEST11_GADGET2_ACTIVE_COLOR    /* gd_PaletteActiveColor */
  749.     }
  750.    }, {
  751.     INTUISUP_DATA_END        /* end of gadget data array */
  752.    }
  753. };
  754. STATIC struct GadgetData  *test_gadget_array[] = {
  755.     &test0_gadget_data[0],
  756.     &test1_gadget_data[0],
  757.     &test2_gadget_data[0],
  758.     &test3_gadget_data[0],
  759.     &test4_gadget_data[0],
  760.     &test5_gadget_data[0],
  761.     &test6_gadget_data[0],
  762.     &test7_gadget_data[0],
  763.     &test8_gadget_data[0],
  764.     &test9_gadget_data[0],
  765.     &test10_gadget_data[0],
  766.     &test11_gadget_data[0],
  767.     NULL,
  768.     NULL
  769. };
  770.     /* Defines for auto request */
  771.  
  772. #define TEST_AUTO_REQ_TITLE        " Auto Request "
  773. #define TEST_AUTO_REQ_BODY_TEXT        "Test line 1\\n\\nTest line 2\\nTest line 3\\n\\nTest line 4"
  774. #define TEST_AUTO_REQ_POS_TEXT        "_Positive"
  775. #define TEST_AUTO_REQ_NEG_TEXT        "_Negative"
  776. #define TEST_AUTO_REQ_FLAGS        (AUTO_REQ_FLAG_BACK_FILL | AUTO_REQ_FLAG_TEXT_CENTER | AUTO_REQ_FLAG_TEXT_COLOR2 | AUTO_REQ_FLAG_HOTKEY | AUTO_REQ_FLAG_CENTER_MOUSE | AUTO_REQ_FLAG_DRAW_RASTER)
  777.  
  778.     /* Defines for requester */
  779.  
  780. #define TEST_REQ_WIDTH        200
  781. #define TEST_REQ_HEIGHT        100
  782. #define TEST_REQ_FLAGS        (REQ_DATA_FLAG_BACK_FILL | REQ_DATA_FLAG_CENTER_WINDOW | REQ_DATA_FLAG_INNER_WINDOW)
  783. #define TEST_REQ_TITLE        " Requester "
  784.  
  785. #define TEST_REQ_TEXT1_TYPE        TEXT_DATA_TYPE_TEXT
  786. #define TEST_REQ_TEXT1_FLAGS        (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD)
  787. #define TEST_REQ_TEXT1_LEFT_EDGE    0
  788. #define TEST_REQ_TEXT1_TOP_EDGE        20
  789. #define TEST_REQ_TEXT1_TEXT        "Text Line 1"
  790. #define TEST_REQ_TEXT1_TEXT_ATTR    &topaz60_attr
  791.  
  792. #define TEST_REQ_TEXT2_TYPE        TEXT_DATA_TYPE_TEXT
  793. #define TEST_REQ_TEXT2_FLAGS        (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_ITALIC | TEXT_DATA_FLAG_COLOR2)
  794. #define TEST_REQ_TEXT2_LEFT_EDGE    0
  795. #define TEST_REQ_TEXT2_TOP_EDGE        (TEST_REQ_TEXT1_TOP_EDGE + 10)
  796. #define TEST_REQ_TEXT2_TEXT        "Text Line 2"
  797. #define TEST_REQ_TEXT2_TEXT_ATTR    &topaz80_attr
  798.  
  799. #define TEST_REQ_TEXT3_TYPE        TEXT_DATA_TYPE_TEXT
  800. #define TEST_REQ_TEXT3_FLAGS        (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_UNDERLINED)
  801. #define TEST_REQ_TEXT3_LEFT_EDGE    0
  802. #define TEST_REQ_TEXT3_TOP_EDGE        (TEST_REQ_TEXT2_TOP_EDGE + 10)
  803. #define TEST_REQ_TEXT3_TEXT        "Text Line 3"
  804. #define TEST_REQ_TEXT3_TEXT_ATTR    &topaz80_attr
  805.  
  806. #define TEST_REQ_BORDER1_TYPE        BORDER_DATA_TYPE_BOX2_OUT
  807. #define TEST_REQ_BORDER1_LEFT_EDGE    20
  808. #define TEST_REQ_BORDER1_TOP_EDGE    10
  809. #define TEST_REQ_BORDER1_WIDTH        (TEST_REQ_WIDTH - 2 * TEST_REQ_BORDER1_LEFT_EDGE)
  810. #define TEST_REQ_BORDER1_HEIGHT        (TEST_REQ_HEIGHT - (3 * TEST_REQ_BORDER1_TOP_EDGE + TEST_REQ_GADGET1_HEIGHT))
  811.  
  812. #define TEST_REQ_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  813. #define TEST_REQ_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_MOVE_POINTER)
  814. #define TEST_REQ_GADGET1_LEFT_EDGE    ((TEST_REQ_WIDTH - TEST_REQ_GADGET1_WIDTH) / 2)
  815. #define TEST_REQ_GADGET1_TOP_EDGE    (TEST_REQ_HEIGHT - (TEST_REQ_GADGET1_HEIGHT + 10))
  816. #define TEST_REQ_GADGET1_WIDTH        ((8 + 2) * 10)
  817. #define TEST_REQ_GADGET1_HEIGHT        19
  818. #define TEST_REQ_GADGET1_TEXT        "_Continue"
  819. #define TEST_REQ_GADGET1_TEXT_ATTR    &topaz60_attr
  820.  
  821.     /* Statics for test borders */
  822.  
  823. STATIC struct TextData  test_req_text_data[] = {
  824.    {
  825.     TEST_REQ_TEXT1_TYPE,        /* td_Type */
  826.     TEST_REQ_TEXT1_FLAGS,        /* td_Flags */
  827.     TEST_REQ_TEXT1_LEFT_EDGE,    /* td_LeftEdge */
  828.     TEST_REQ_TEXT1_TOP_EDGE,    /* td_TopEdge */
  829.     TEST_REQ_TEXT1_TEXT,        /* *td_Text */
  830.     TEST_REQ_TEXT1_TEXT_ATTR    /* *td_TextAttr */
  831.    }, {
  832.     TEST_REQ_TEXT2_TYPE,        /* td_Type */
  833.     TEST_REQ_TEXT2_FLAGS,        /* td_Flags */
  834.     TEST_REQ_TEXT2_LEFT_EDGE,    /* td_LeftEdge */
  835.     TEST_REQ_TEXT2_TOP_EDGE,    /* td_TopEdge */
  836.     TEST_REQ_TEXT2_TEXT,        /* *td_Text */
  837.     TEST_REQ_TEXT2_TEXT_ATTR    /* *td_TextAttr */
  838.    }, {
  839.     TEST_REQ_TEXT3_TYPE,        /* td_Type */
  840.     TEST_REQ_TEXT3_FLAGS,        /* td_Flags */
  841.     TEST_REQ_TEXT3_LEFT_EDGE,    /* td_LeftEdge */
  842.     TEST_REQ_TEXT3_TOP_EDGE,    /* td_TopEdge */
  843.     TEST_REQ_TEXT3_TEXT,        /* *td_Text */
  844.     TEST_REQ_TEXT3_TEXT_ATTR    /* *td_TextAttr */
  845.    }, {
  846.     INTUISUP_DATA_END        /* mark end of border data array */
  847.    }
  848. };
  849. STATIC struct BorderData  test_req_border_data[] = {
  850.    {
  851.     TEST_REQ_BORDER1_TYPE,        /* bd_Type */
  852.     TEST_REQ_BORDER1_LEFT_EDGE,    /* bd_LeftEdge */
  853.     TEST_REQ_BORDER1_TOP_EDGE,    /* bd_TopEdge */
  854.     TEST_REQ_BORDER1_WIDTH,        /* bd_Width */
  855.     TEST_REQ_BORDER1_HEIGHT        /* bd_Height */
  856.    }, {
  857.     INTUISUP_DATA_END        /* mark end of border data array */
  858.    }
  859. };
  860. STATIC struct GadgetData  test_req_gadget_data[] = {
  861.    {
  862.     TEST_REQ_GADGET1_TYPE,        /* gd_Type */
  863.     TEST_REQ_GADGET1_FLAGS,        /* gd_Flags */
  864.     TEST_REQ_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  865.     TEST_REQ_GADGET1_TOP_EDGE,    /* gd_TopEdge */
  866.     TEST_REQ_GADGET1_WIDTH,        /* gd_Width */
  867.     TEST_REQ_GADGET1_HEIGHT,    /* gd_Height */
  868.     TEST_REQ_GADGET1_TEXT,        /* *gd_Text */
  869.     TEST_REQ_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  870.     { 0, 0, 0 }
  871.    }, {
  872.     INTUISUP_DATA_END        /* mark end of border data array */
  873.    }
  874. };
  875. STATIC struct RequesterData  test_requester_data = {
  876.     0,                /* rd_LeftEdge */
  877.     0,                /* rd_TopEdge */
  878.     TEST_REQ_WIDTH,            /* rd_Width */
  879.     TEST_REQ_HEIGHT,        /* rd_Height */
  880.     TEST_REQ_FLAGS,            /* rd_Flags */
  881.     TEST_REQ_TITLE,            /* *rd_Title */
  882.     &test_req_text_data[0],        /* *rd_Texts */
  883.     &test_req_border_data[0],    /* *rd_Borders */
  884.     &test_req_gadget_data[0]    /* *rd_Gadgets */
  885. };
  886.     /* Defines for test menus */
  887.  
  888. #define TEST_MENU_TEXT_ATTR    &topaz60_attr
  889.  
  890.     /* Statics for test menus */
  891.  
  892. STATIC struct MenuData  test_menu_data[] = {
  893.    {
  894.     MENU_DATA_TYPE_TITLE, 0, "Menu 0", NULL, 0
  895.    }, {
  896.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_ATTRIBUTE | MENU_DATA_FLAG_SELECTED, "Item 0.0", "0", ~(1L << 0)
  897.    }, {
  898.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_ATTRIBUTE, "Item 0.1", "1", ~(1L << 1)
  899.    }, {
  900.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_HIGH_BOX, "Item 0.2", NULL, 0
  901.    }, {
  902.           MENU_DATA_TYPE_SUBITEM, 0, "Item 0.2.0", "A", 0
  903.    }, {
  904.           MENU_DATA_TYPE_SUBITEM, 0, "Item 0.2.1", "B", 0
  905.    }, {
  906.        MENU_DATA_TYPE_ITEM, 0, "Item 0.3", NULL, 0
  907.    }, {
  908.     MENU_DATA_TYPE_TITLE,  0, "Menu 1", NULL, 0
  909.    }, {
  910.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_HIGH_BOX, "Item 1.0", "C", 0
  911.    }, {
  912.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_EMPTY_LINE, "Item 1.1", "D", 0
  913.    }, {
  914.        MENU_DATA_TYPE_ITEM, 0, "Item 1.2", NULL, 0
  915.    }, {
  916.           MENU_DATA_TYPE_SUBITEM, 0, "Item 1.2.0", "E", 0
  917.    }, {
  918.           MENU_DATA_TYPE_SUBITEM, 0, "Item 1.2.1", "F", 0
  919.    }, {
  920.        MENU_DATA_TYPE_ITEM, 0, "Item 1.3", NULL, 0
  921.    }, {
  922.           MENU_DATA_TYPE_SUBITEM, 0, "Item 1.3.0", "G", 0
  923.    }, {
  924.           MENU_DATA_TYPE_SUBITEM, MENU_DATA_FLAG_EMPTY_LINE, "Item 1.3.1", "H", 0
  925.    }, {
  926.        MENU_DATA_TYPE_ITEM, 0, "Item 1.4", "I", 0
  927.    }, {
  928.     INTUISUP_DATA_END        /* mark end of menu data */
  929.    }
  930. };
  931.     /* Prototypes */
  932.  
  933. VOID test_action(APTR ri, struct Window  *win, APTR gl, APTR ml);
  934. BOOL build_list(struct List  *list, BYTE **list_entry);
  935. VOID free_list(struct List  *list);
  936.  
  937.     /* Pragmas */
  938.  
  939. #pragma regcall(test_action(a0,a1,a2,a3))
  940. #pragma regcall(build_list(a0,a1))
  941. #pragma regcall(free_list(a0))
  942.  
  943.     /* Library test */
  944.  
  945.    LONG
  946. main(VOID)
  947. {
  948.    struct Window  *win;
  949.    APTR ri, gl, ml;
  950.  
  951.    if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
  952.       if (IntuiSupBase = OpenLibrary(IntuiSupName, IntuiSupVersion)) {
  953.      if (build_list(&select_list, &select_list_entries[0]) == TRUE) {
  954.         if (build_list(&test_list, &cycle_text_array[0]) == TRUE) {
  955.            if (ri = IGetRenderInfo(NULL, RENDER_INFO_FLAGS)) {
  956.           if (win = IOpenWindow(ri, &test_new_window,
  957.                                OPEN_WINDOW_FLAGS)) {
  958.              if (gl = ICreateGadgets(ri, &select_gadget_data[0], 0,
  959.                                  0, NULL)) {
  960.             if (ml = ICreateMenu(ri, win, &test_menu_data[0],
  961.                            TEST_MENU_TEXT_ATTR, NULL)) {
  962.                IDisplayGadgets(win, gl);
  963.                IAttachMenu(win, ml);
  964.                test1_gadget_data[0].gd_SpecialData.gd_ButtonData.
  965.                         gd_ButtonNormalRender = &image1;
  966.                test_action(ri, win, gl, ml);
  967.                IRemoveMenu(ml);
  968.                IRemoveGadgets(gl);
  969.                IFreeMenu(ml);
  970.             }
  971.             IFreeGadgets(gl);
  972.              }
  973.              ICloseWindow(win, FALSE);
  974.           }
  975.           IFreeRenderInfo(ri);
  976.            }
  977.            free_list(&test_list);
  978.         }
  979.         free_list(&select_list);
  980.      }
  981.      CloseLibrary(IntuiSupBase);
  982.       }
  983.       CloseLibrary(IntuitionBase);
  984.    }
  985.    return(0L);
  986. }
  987.     /* Perform IDCMP action */
  988.  
  989.    VOID
  990. test_action(APTR ri, struct Window  *win, APTR sgl, APTR ml)
  991. {
  992.    struct MsgPort  *up = win->UserPort;
  993.    APTR   tgl = NULL;
  994.    USHORT entry = 0, flags = SELECT_FLAG_CREATE_GADGETS;
  995.    BOOL   keepon = TRUE;
  996.  
  997.    /* Waiting for close window event */
  998.    do {
  999.       struct IntuiMessage  *msg;
  1000.  
  1001.       /* Check if test gadget must be changed */
  1002.       if (flags & SELECT_FLAG_CREATE_GADGETS) {
  1003.      struct GadgetData  *gd_ptr;
  1004.  
  1005.      /* Release old test gadgets */
  1006.      if (tgl) {
  1007.         IRemoveGadgets(tgl);
  1008.         IFreeGadgets(tgl);
  1009.         tgl = NULL;
  1010.      }
  1011.  
  1012.      /* Clear display areas */
  1013.      IClearWindow(ri, win, TEST_AREA_LEFT_EDGE, TEST_AREA_TOP_EDGE,
  1014.                   TEST_AREA_LEFT_EDGE + TEST_AREA_WIDTH - 1,
  1015.                   TEST_AREA_TOP_EDGE + TEST_AREA_HEIGHT - 1, 0);
  1016.      IClearWindow(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
  1017.                       MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
  1018.                   MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
  1019.      /* Check if test gadgets exists */
  1020.      if (gd_ptr = test_gadget_array[entry]) {
  1021.         struct GadgetData  *gd;
  1022.  
  1023.         /* Init gadget data according to select flags */
  1024.         for (gd = gd_ptr; gd->gd_Type != INTUISUP_DATA_END; gd++) {
  1025.            ULONG gflags = gd->gd_Flags;
  1026.  
  1027.            if (flags & SELECT_FLAG_DISABLED) {
  1028.           gflags |= GADGET_DATA_FLAG_DISABLED;
  1029.            } else {
  1030.           gflags &= ~GADGET_DATA_FLAG_DISABLED;
  1031.            }
  1032.            if (flags & SELECT_FLAG_NO_BORDER) {
  1033.           gflags |= GADGET_DATA_FLAG_NO_BORDER;
  1034.            } else {
  1035.           gflags &= ~GADGET_DATA_FLAG_NO_BORDER;
  1036.            }
  1037.            if (flags & SELECT_FLAG_HIGH_COMP) {
  1038.           gflags |= GADGET_DATA_FLAG_HIGH_COMP;
  1039.            } else {
  1040.           gflags &= ~GADGET_DATA_FLAG_HIGH_COMP;
  1041.            }
  1042.            if (flags & SELECT_FLAG_TEXT_COLOR2) {
  1043.           gflags |= GADGET_DATA_FLAG_TEXT_COLOR2;
  1044.            } else {
  1045.           gflags &= ~GADGET_DATA_FLAG_TEXT_COLOR2;
  1046.            }
  1047.            gd->gd_Flags = gflags;
  1048.         }
  1049.  
  1050.         /* Create and display new test gadgets */
  1051.         if (tgl = ICreateGadgets(ri, gd_ptr, 0, 0, NULL)) {
  1052.            IDisplayGadgets(win, tgl);
  1053.         }
  1054.      }
  1055.      flags &= ~SELECT_FLAG_CREATE_GADGETS;
  1056.       }
  1057.  
  1058.       /* Wait for IDCMP events */
  1059.       WaitPort(up);
  1060.       while (msg = IGetMsg(up)) {
  1061.      APTR   gl;
  1062.      ULONG  class, value;
  1063.      USHORT code;
  1064.  
  1065.      /* Get data from Intuition message and reply it */
  1066.      class = msg->Class;
  1067.      code  = msg->Code;
  1068.      value = (ULONG)msg->IAddress;
  1069.      gl    = (APTR)msg->SpecialLink;
  1070.      IReplyMsg(msg);
  1071.  
  1072.      /* Perform action according to message class */
  1073.      switch (class) {
  1074.         case CLOSEWINDOW :
  1075.            keepon = FALSE;
  1076.            break;
  1077.  
  1078.         case ISUP_ID :
  1079.            if (gl == sgl) {
  1080.           APTR rl;
  1081.  
  1082.           /* Perform action according to select gadgets */
  1083.           switch (code) {
  1084.              case SELECT_GADGET_LIST :
  1085.  
  1086.             /* Perform action according to selected ISUP object */
  1087.             switch (entry = value) {
  1088.                case SELECT_ENTRY_AUTO_REQUESTER :
  1089.                   IAutoRequest(win, TEST_AUTO_REQ_TITLE,
  1090.                             TEST_AUTO_REQ_BODY_TEXT,
  1091.                              TEST_AUTO_REQ_POS_TEXT,
  1092.                          TEST_AUTO_REQ_NEG_TEXT, 0L, 0L,
  1093.                          TEST_AUTO_REQ_FLAGS, NULL);
  1094.                   break;
  1095.  
  1096.                case SELECT_ENTRY_REQUESTER :
  1097.                   if (rl = IDisplayRequester(win,
  1098.                           &test_requester_data, NULL)) {
  1099.                  BOOL keepon2 = TRUE;
  1100.  
  1101.                  do {
  1102.                     WaitPort(up);
  1103.                     while (msg = IGetMsg(up)) {
  1104.                        if (msg->Class == ISUP_ID) {
  1105.                       keepon2 = FALSE;
  1106.                        }
  1107.                        IReplyMsg(msg);
  1108.                     }
  1109.                  } while (keepon2 == TRUE);
  1110.                  IRemoveRequester(rl);
  1111.                   }
  1112.                   break;
  1113.             }
  1114.             break;
  1115.  
  1116.              case SELECT_GADGET_DISABLED :
  1117.             if (value) {
  1118.                flags |= SELECT_FLAG_DISABLED;
  1119.             } else {
  1120.                flags &= ~SELECT_FLAG_DISABLED;
  1121.             }
  1122.             break;
  1123.  
  1124.              case SELECT_GADGET_NO_BORDER :
  1125.             if (value) {
  1126.                flags |= SELECT_FLAG_NO_BORDER;
  1127.             } else {
  1128.                flags &= ~SELECT_FLAG_NO_BORDER;
  1129.             }
  1130.             break;
  1131.  
  1132.              case SELECT_GADGET_HIGH_COMP :
  1133.             if (value) {
  1134.                flags |= SELECT_FLAG_HIGH_COMP;
  1135.             } else {
  1136.                flags &= ~SELECT_FLAG_HIGH_COMP;
  1137.             }
  1138.             break;
  1139.  
  1140.              case SELECT_GADGET_TEXT_COLOR2 :
  1141.             if (value) {
  1142.                flags |= SELECT_FLAG_TEXT_COLOR2;
  1143.             } else {
  1144.                flags &= ~SELECT_FLAG_TEXT_COLOR2;
  1145.             }
  1146.             break;
  1147.           }
  1148.           flags |= SELECT_FLAG_CREATE_GADGETS;
  1149.            } else {
  1150.           BYTE *format, buffer[80];
  1151.  
  1152.           /* Perform action according to test gadgets */
  1153.           if (entry == SELECT_ENTRY_STRING) {
  1154.              format = MESSAGE_TEXT1;
  1155.           } else {
  1156.              format = MESSAGE_TEXT2;
  1157.           }
  1158.           sprintf(&buffer[0], format, entry, value);
  1159.           IClearWindow(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
  1160.                       MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
  1161.                   MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
  1162.           IPrintText(ri, win, &buffer[0], 0, MESSAGE_TOP_EDGE,
  1163.                 TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_CENTER |
  1164.                   TEXT_DATA_FLAG_COLOR2, MESSAGE_TEXT_ATTR);
  1165.            }
  1166.            break;
  1167.  
  1168.         case MENUPICK :
  1169.            while (code != MENUNULL) {
  1170.           BYTE buffer[80];
  1171.  
  1172.           /* Print message with menu item num */
  1173.           sprintf(&buffer[0], MESSAGE_TEXT3,
  1174.                   (MENUNUM(code) != NOMENU ? MENUNUM(code) : 0),
  1175.                   (ITEMNUM(code) != NOITEM ? ITEMNUM(code) : 0),
  1176.                 (SUBNUM(code) != NOSUB ? SUBNUM(code) : 0));
  1177.           IClearWindow(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
  1178.                       MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
  1179.                   MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
  1180.           IPrintText(ri, win, &buffer[0], 0, MESSAGE_TOP_EDGE,
  1181.                 TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_CENTER |
  1182.                   TEXT_DATA_FLAG_COLOR2, MESSAGE_TEXT_ATTR);
  1183.           code = IMenuItemAddress(ml, code)->NextSelect;
  1184.            }
  1185.            break;
  1186.      }
  1187.       }
  1188.    } while (keepon == TRUE);
  1189.  
  1190.    /* Release test gadgets */
  1191.    if (tgl) {
  1192.       IRemoveGadgets(tgl);
  1193.       IFreeGadgets(tgl);
  1194.    }
  1195. }
  1196.     /* Build list from given entry array */
  1197.  
  1198.    BOOL
  1199. build_list(struct List  *list, BYTE **list_entry)
  1200. {
  1201.    BYTE *text;
  1202.    BOOL success = TRUE;
  1203.  
  1204.    NewList(list);
  1205.    while (text = *list_entry++) {
  1206.       struct Node  *node;
  1207.  
  1208.       if (node = AllocMem((LONG)sizeof(struct Node),
  1209.                       (LONG)MEMF_PUBLIC | MEMF_CLEAR)) {
  1210.      node->ln_Name = text;
  1211.      AddTail(list, node);
  1212.       } else {
  1213.      free_list(list);
  1214.      success = FALSE;
  1215.      break;
  1216.       }
  1217.    }
  1218.    return(success);
  1219. }
  1220.     /* Free given list */
  1221.  
  1222.    VOID
  1223. free_list(struct List  *list)
  1224. {
  1225.    struct Node  *node;
  1226.  
  1227.    while (node = RemHead(list)) {
  1228.       FreeMem(node, (LONG)sizeof(struct Node));
  1229.    }
  1230. }
  1231.